Main.pushModal() used to ensure a compositor grab, but didn't
take an input grab. That changed when porting to ClutterGrab,
so by limiting the grab to the shield/dialog, it is no longer
possible to access top bar menus when the screen is locked.
To fix that, take the grab on the whole uiGroup so that the top
bar is included.
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5470
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2298>
if (this._isModal)
return true;
- let grab = Main.pushModal(this.actor, { actionMode: Shell.ActionMode.LOCK_SCREEN });
+ let grab = Main.pushModal(Main.uiGroup, { actionMode: Shell.ActionMode.LOCK_SCREEN });
// We expect at least a keyboard grab here
this._isModal = (grab.get_seat_state() & Clutter.GrabState.KEYBOARD) !== 0;
timestamp,
actionMode: Shell.ActionMode.UNLOCK_SCREEN,
};
- let grab = Main.pushModal(this, modalParams);
+ let grab = Main.pushModal(Main.uiGroup, modalParams);
if (grab.get_seat_state() !== Clutter.GrabState.ALL) {
Main.popModal(grab);
return false;